<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
  <script>
    function map(arr, mapCallback) {
      // 首先，检查传递的参数是否正确。
      if (!Array.isArray(arr) || !arr.length || typeof mapCallback !== 'function') { 
        return [];
      } else {
        let result = [];
        // 每次调用此函数时，我们都会创建一个 result 数组
        // 因为我们不想改变原始数组。
        
        for (let i = 0; i< arr.length; i++) {
          console.log(mapCallback(arr[i]), '22222222222')
          result.push(mapCallback(arr[i], i, arr)); 
          // 将 mapCallback 返回的结果 push 到 result 数组中
        }
        return result;
      }
    }

    //调用
    let reason = map([1,2,3], function(item) {
      return item*2
    })

    console.log(reason) // [2,4,6]
  </script>
</body>
</html>